Morphological Analysis


In [1]:
from indicnlp.morph import unsupervised_morph

In [2]:
morph = unsupervised_morph.UnsupervisedMorphAnalyzer("bn")

In [25]:
text = u"""\
করা করেছিলাম করেছি করতে করেছিল হয়েছে হয়েছিল হয় হওয়ার হবে আবিষ্কৃত আবিষ্কার অভিষিক্ত অভিষেক অভিষেকের আমি আমার আমাদের তুমি তোমার তোমাদের বসা বসেছিল বসে বসি বসেছিলাম বস বসার\
"""

In [26]:
word_token = text.split(" ")

In [5]:
word_morph = []

for i in word_token:
    word_morph.append(morph.morph_analyze(i))

In [6]:
import pandas as pd

In [7]:
indic = pd.DataFrame({"1_Word": word_token, "2_Morpheme": word_morph})

In [8]:
indic


Out[8]:
1_Word 2_Morpheme
0 করা [করা]
1 করেছিলাম [করে, ছিলাম]
2 করেছি [করেছ, ি]
3 করতে [কর, তে]
4 করেছিল [করেছিল]
5 হয়েছে [হয়ে, ছে]
6 হয়েছিল [হয়ে, ছিল]
7 হয় [হয়]
8 হওয়ার [হওয়ার]
9 হবে [হবে]
10 আবিষ্কৃত [আবিষ্, কৃত]
11 আবিষ্কার [আবিষ্কার]
12 অভিষিক্ত [অভি, ষি, ক্ত]
13 অভিষেক [অভিষেক]
14 অভিষেকের [অভিষেক, ের]
15 আমি [আমি]
16 আমার [আমার]
17 আমাদের [আমাদের]
18 তুমি [তুমি]
19 তোমার [তো, মার]
20 তোমাদের [তোমাদের]
21 বসা [বসা]
22 বসেছিল [বসে, ছিল]
23 বসে [বসে]
24 বসি [ব, সি]
25 বসেছিলাম [বসে, ছিলাম]
26 বস [বস]
27 বসার [বসা, র]

Transliteration


In [9]:
from indicnlp.transliterate.unicode_transliterate import ItransTransliterator

In [10]:
bangla_text = "ami apni tumi tomar tomader amar apnar apnader akash"

In [11]:
text_trans = ItransTransliterator.from_itrans(bangla_text, "bn")

In [12]:
print repr(text_trans).decode("unicode_escape")


u'অমি অপ্নি তুমি তোমর্ তোমদের্ অমর্ অপ্নর্ অপ্নদের্ অকশ্'

Transliteration


In [13]:
from transliteration import getInstance

In [14]:
trans = getInstance()

In [15]:
text_trans = trans.transliterate(bangla_text, "bn_IN")


Found  6  rules.
Found  6  rules.
Found  6  rules.
Found  6  rules.
Found  6  rules.
Found  6  rules.
Found  6  rules.
Found  6  rules.
Found  6  rules.

In [16]:
print repr(text_trans).decode("unicode_escape")


u'ওমী     অমোর    '

Stemming


In [17]:
import rbs

In [18]:
word_stem1 = []

for i in word_token:
    word_stem1.append(rbs.stemWord(i, True))

In [19]:
bs1 = pd.DataFrame({"1_Word": word_token, "2_Stem": word_stem1})

In [20]:
bs1


Out[20]:
1_Word 2_Stem
0 করা কর
1 করেছিলাম করেছিলাম
2 করেছি করেছ
3 করতে করত
4 করেছিল করেছিল
5 হয়েছে হয়েছ
6 হয়েছিল হয়েছিল
7 হয়
8 হওয়ার
9 হবে হব
10 আবিষ্কৃত আবিষ্কৃত
11 আবিষ্কার আবিষ্ক
12 অভিষিক্ত অভিষিক্ত
13 অভিষেক অভিষেক
14 অভিষেকের অভিষেক
15 আমি আম
16 আমার আমার
17 আমাদের আম
18 তুমি তুম
19 তোমার তোম
20 তোমাদের তোম
21 বসা বস
22 বসেছিল বসেছিল
23 বসে বস
24 বসি বস
25 বসেছিলাম বসেছিলাম
26 বস বস
27 বসার বসার

Stemming


In [21]:
import jnius_config

jnius_config.set_classpath(".", "path to class")

In [22]:
from jnius import autoclass

In [23]:
cls = autoclass("RuleFileParser")

In [24]:
stemmer = cls()

In [27]:
word_stem2 = []

for i in word_token:
    word_stem2.append(stemmer.stemOfWord(i))

In [28]:
bs2 = pd.DataFrame({"1_Word": word_token, "2_Stem": word_stem2})

In [29]:
bs2


Out[29]:
1_Word 2_Stem
0 করা
1 করেছিলাম করেছিলাম
2 করেছি করে
3 করতে কর
4 করেছিল কর
5 হয়েছে
6 হয়েছিল
7 হয়
8 হওয়ার হওয়
9 হবে হব
10 আবিষ্কৃত আবিষ্কৃত
11 আবিষ্কার আবিষ্ক
12 অভিষিক্ত অভিষিক্ত
13 অভিষেক অভিষেক
14 অভিষেকের অভিষেক
15 আমি আমি
16 আমার আম
17 আমাদের আমা
18 তুমি তুমি
19 তোমার তোম
20 তোমাদের তোমা
21 বসা বসা
22 বসেছিল বস
23 বসে বস
24 বসি বসি
25 বসেছিলাম বসেছিলাম
26 বস বস
27 বসার বস

Transliteration


In [30]:
from pyavrophonetic import avro

In [31]:
trans_text = avro.parse(bangla_text)

In [32]:
print repr(trans_text).decode("unicode_escape")


u'আমি আপ্নি তুমি তমার তমাদের আমার আপ্নার আপ্নাদের আকাশ'